В реестре UniLearn и в LMS не совпадают идентификаторы студентов. Команде нужно несколько отчётов, и в каждом из них ответ на вопрос «Строки какого источника должны попасть в результат?»
Используйте базу данных из лабы 6
Если вы уже запускали lab6_7_setup.sql в лабе 6, оставьте эти данные. В противном случае откройте в pgAdmin общий файл настройки, выданный преподавателем, и выполните его один раз. Выбирайте lab6_7 в каждом новом подключении Query Tool.
Начните с уже знакомого соединения
- Просмотрите
studentsиlms_roster: 22 идентификатора из реестра и 6 идентификаторов из LMS. - Выполните INNER JOIN по правилу сопоставления из лабы 6.
- Определите четыре идентификатора, которые есть в обоих источниках.
- Объясните, почему этот результат не может быть полным списком ни из одного источника.
Пять запросов отчётов
Перечислите общие учётные записи; сохраните всех студентов из реестра; сохраните все учётные записи LMS; согласуйте оба источника; сформируйте варианты пар «студент–курс». Для этих запросов вы напишете запросы с INNER, LEFT, RIGHT, FULL и CROSS JOIN.
SET search_path TO lab6_7;
SELECT s.student_id AS registry_id, s.student_name,
r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
ON s.student_id = r.student_id
ORDER BY s.student_id;Проверьте совпавшие ID
Четыре строки: S101, S102, S105 и S121. Каждый ID уникален в обеих таблицах, поэтому каждая совпавшая пара встречается один раз. Этот отчёт содержит только общие учётные записи.
У Умы (S121) есть учётная запись в LMS, хотя она ни на что не записана. Совпадение учётных записей не доказывает участие в курсе.
Просмотрите оба источника
Список LMS — это непроверенный импорт. В нём намеренно нет внешнего ключа на students, поэтому S901 и S902 могут существовать только в этом источнике.
SET search_path TO lab6_7;
SELECT student_id, student_name
FROM students
ORDER BY student_id;
SELECT student_id, lms_name
FROM lms_roster
ORDER BY student_id;| ID в LMS | Имя в LMS | Есть в реестре? |
|---|---|---|
| S101 | Alice Wong | Да |
| S102 | Ben Lau | Да |
| S105 | Emma Li | Да |
| S121 | Uma Shah | Да |
| S901 | Импортированный гость A | Нет |
| S902 | Импортированный гость B | Нет |
Общая настройка также содержит 8 курсов, 37 записей на курсы, 8 заданий и 30 сданных работ для последующих заданий. Все записи вымышленные.
Прочитайте запрос, прежде чем выбирать соединение
| Запрос | Требуемый результат |
|---|---|
| Общие учётные записи | Только совпадающие пары ID. |
| Охват реестра | Каждый студент из реестра, даже без учётной записи в LMS. |
| Аудит импорта в LMS | Каждая импортированная учётная запись LMS, даже без совпадения в реестре. |
| Согласование обеих систем | Общие учётные записи и записи, встречающиеся только в одном из источников. |
| Планирование курсов | Каждый выбранный студент в паре с каждым выбранным курсом. |
В лабе 6 мы выяснили, как совпадающие пары образуют строки. В этой лабе измените тип соединения, чтобы управлять несовпавшими строками или генерировать все комбинации, а затем проверьте, что представляет собой каждая строка результата.